#ifndef _VL_RTSP_H264_SOURCE__H_
#define _VL_RTSP_H264_SOURCE__H_

#include "defs.h"
#include "./media_souce.h"

namespace VLRTSP {

/**
 * @Author: CimZzz
 * @Date: 2022-01-13 16:56:29
 * 
 * H264 媒体资源
 */
class H264Source: public MediaSource {

public:
	/**
	 * @Author: CimZzz
	 * @Date: 2022-01-13 16:17:58
	 * 
	 * 构造函数
	 */
	explicit H264Source();
	
	/**
	 * @Author: CimZzz
	 * @Date: 2022-01-13 16:18:03
	 * 
	 * 析构函数
	 */
	~H264Source();


	/**
	 * @Author: CimZzz
	 * @Date: 2022-01-13 16:49:32
	 * 
	 * 构建媒体资源 SDP 段
	 * @param buffer 字节缓冲区
	 */
	virtual void buildSourceSDP(Buffer* buffer);


protected:
	/**
	 * @Author: CimZzz
	 * @Date: 2022-01-14 14:18:33
	 * 
	 * 处理数据缓冲，组装成 RTP 帧，通过 [sendRTPFrame] 进行发送
	 * @param data 外部传来的数据
	 */
	virtual void onHandleDataBuffer(std::shared_ptr<MediaSourceData>& data);

	/**
	 * @Author: CimZzz
	 * @Date: 2022-01-10 15:57:04
	 * 
	 * 获取载荷类型
	 * @return 返回载荷类型，参照 [PayloadType] 枚举
	 */
	virtual PayloadType getPayloadType() const;
};

}


#endif //_VL_RTSP_H264_SOURCE__H_
